﻿namespace EveKillboard.Core.Views
{
    using System.ComponentModel.DataAnnotations;
    using System;

    public abstract class CorporationCharacterView : TopView, ICharacterView
    {
        public virtual int CorporationInternalId { get; set; }
        [NotMapped]
        public override decimal Value { get; set; }
    }

    public class CorporationCharacterMonthView : CorporationCharacterView, IMonthView
    {
        [Key]
        [Column("CharacterInternalID")]
        public override int InternalId { get; set; }
        [Column("CharacterName")]
        public override string Name { get; set; }
        [Column("CharacterEveID")]
        public override int EveId { get; set; }
        [Column("CorporationInternalID")]
        public override int CorporationInternalId { get; set; }
        [Column("Year")]
        public Int16 Year { get; set; }
        [Column("Month")]
        public Int16 Month { get; set; }
    }
    public class CorporationCharacterWeekView : CorporationCharacterView, IWeekView
    {
        [Key]
        [Column("CharacterInternalID")]
        public override int InternalId { get; set; }
        [Column("CharacterName")]
        public override string Name { get; set; }
        [Column("CharacterEveID")]
        public override int EveId { get; set; }
        [Column("CorporationInternalID")]
        public override int CorporationInternalId { get; set; }
        [Column("Year")]
        public Int16 Year { get; set; }
        [Column("Month")]
        public Int16 Month { get; set; }
        [Column("Week")]
        public Int16 Week { get; set; }
    }
    [Table("CorporationCharacterKillsCountMonthView")]
    public class CorporationCharacterKillsMonthView : CorporationCharacterMonthView, IKillsView
    {
        [Column("Kills")]
        public override int Count { get; set; }
    }
    [Table("CorporationCharacterKillsCountView")]
    public class CorporationCharacterKillsWeekView : CorporationCharacterWeekView, IKillsView
    {
        [Column("Kills")]
        public override int Count { get; set; }
    }
    [Table("CorporationCharacterLossesCountMonthView")]
    public class CorporationCharacterLossesMonthView : CorporationCharacterMonthView, ILossesView
    {
        [Column("Losses")]
        public override int Count { get; set; }
    }
    [Table("CorporationCharacterLossesCountView")]
    public class CorporationCharacterLossesWeekView : CorporationCharacterWeekView, ILossesView
    {
        [Column("Losses")]
        public override int Count { get; set; }
    }
}